var icon_dir = "static/img/"

var icon_category = {
    "逻辑" : {
        "img" : icon_dir + "logic.svg"
    },
    "循环" : {
        "img" : icon_dir + "circulate.svg"
    },
    "数学" : {
        "img" : icon_dir + "math.svg"
    },
    "文本" : {
        "img" : icon_dir + "string.svg"
    },
    "列表" :{
        "img" : icon_dir + "list.svg"
    },
    "变量" : {
        "img" : icon_dir + "变量.svg"
    },
    "机器人控制": {
        "img" : icon_dir + "robot-cmd.svg"
    }
}

// Blockly.HSV_SATURATION = 0.6 // 0 (inclusive) to 1 (exclusive), defaulting to 0.45
// Blockly.HSV_VALUE =0.8// 0 (inclusive) to 1 (exclusive), defaulting to 0.65

// 1. 为了创建自定义类别，先创建自定义类别，继承自Blockly.ToolboxCategory
class CustomCategory extends Blockly.ToolboxCategory {
    // 自定义类别创造函数
    // categoryDef: 类别定义的信息
    // toolbox: 表示类别的父级toolbox
    // opt_parent: 可选参数，表示其父类别
    constructor(categoryDef, toolbox, opt_parent) {
        super(categoryDef, toolbox, opt_parent);
    }
    // 覆盖原方法
    addColourBorder_(colour){
        this.rowDiv_.style.backgroundColor = colour;
    }

    // 覆盖原方法
    setSelected(isSelected){
        // 使用getElementsByClassName选中类别对应的span元素
        var labelDom = this.rowDiv_.getElementsByClassName('blocklyTreeLabel')[0];
        if (isSelected) {
            // 选中的类别背景色设置为白色
            this.rowDiv_.style.backgroundColor = 'rgba(245, 167, 50, 0.979)';
            // 选中的类别文本设置为原背景色
            labelDom.style.color = this.colour_;
            // 设置icon的颜色和文本颜色相同
            this.iconDom_.style.color = this.colour_; 
        } else {
            // 未选中的类别背景色设置
            this.rowDiv_.style.backgroundColor = this.colour_;
            // 未选中的类别文本设置为白色
            labelDom.style.color = 'white';
            // 设置icon的颜色和文本颜色相同
            this.iconDom_.style.color = 'rgba(245, 167, 50, 0.979)';
        }
        // This is used for accessibility purposes.
        Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_),
            Blockly.utils.aria.State.SELECTED, isSelected);
    }

    // 覆盖原方法
    createIconDom_() {
        var path = "static/img/blockly_logo_only.svg"
        for(var val in icon_category) {
            if(this.name_ == String(val)){
                path = icon_category[val]["img"]
            }
        }
        const img = document.createElement('img');
        img.src = path;     //  初始代码已包含此svg文件
        img.alt = 'Lamp';
        img.width='30';
        img.height='30';
        return img;
    }
}

// 2. 自定义类别需要向Blockly注册，告知自定义类别的存在，不然会无法识别新建的类
Blockly.registry.register(
    Blockly.registry.Type.TOOLBOX_ITEM,
    Blockly.ToolboxCategory.registrationName,
    CustomCategory, true
);







